In a Hard Disk Drive assembly illustrated in simplified form in FIG. 1, the read/write R/W heads 101 are attached to one end of an actuator arm 102 that pivots about point 103. A voice coil motor VCM 104 is located at the opposite end of the arm and, when driven, generates a torque, Tvcm, about the pivot to control the head position, xcex8h. The spindle motor 105 drives multiple platters 106 which contain the stored information. The equivalent circuit model of the simplified HDD assembly, known in this discipline as the xe2x80x98Plantxe2x80x99, is illustrated in FIG. 2.
Because of errors in the servo-writing process and imperfections in the spindle bearings, the true location of a given track, y 201, moves beneath the head. Through the servo-writing process, position information is encoded onto the disk surface at a finite number of equally spaced locations around the disk known as servo sectors. At each servo sector, the read head serves as the position transducer for the VCM servo system, and provides the signal ym 202, the measured position of the head with respect to the track center line. The position measurement is processed by a compensation algorithm and produces a control signal, u 203, which is indicative of the desired VCM torque necessary to keep the R/W head on track in the presence of the various disturbance torques and disk errors. A power driver is used to transform the control signal into the power signal, Vd 204, necessary to physically actuate the arm and move the head.
Voice Coil Motor
The VCM, consisting of a coil of wire sandwiched between two permanent magnets, produces an actuating torque on the arm carrying the R/W head. The torque is a function of the coil current and the position of the coils between the permanent magnets and can be described by the equation,
Tvcm=ki(i,xcex8)xe2x80x83xe2x80x83(1)
If we assume that the magnetic field strength, B, is constant over the full range of travel of the actuator, then the torque function can be approximated by the linear relation, kt(i,xcex8)=Kt, and (1) can be written,
Tvcm=Ktixe2x80x83xe2x80x83(2)
If N is the number of turns in the coil, l is the length of each turn in the coil and r is the distance from the coil center to the arm pivot, then Kt is given by,
Kt=NBlrxe2x80x83xe2x80x83(3)
Because a moving coil in a magnetic field generates an electric potential, known as the back e.m.f. voltage, the effective voltage on the coil, Vc, is a combination of the voltage supplied by the power driver, Vd, and the back e.m.f. voltage, Vb,
xe2x80x83Vc=Vdxe2x88x92Vbxe2x80x83xe2x80x83(4)
The back e.m.f. voltage is a function of the angular velocity of the moving coil xcfx89, and is given by the equation,
Vb=Ktxcfx89xe2x80x83xe2x80x83(5)
where Kt is given by equation (3).
Conventional Hard Disk Drive Controllers
Voice Coil Motors in conventional hard disk drives are controlled with a current command to a transconductance loop. The principle, illustrated in FIG. 3, is that this high bandwidth current loop 301 is able to reject disturbances and provide more protection from system parameter uncertainty than a smaller bandwidth. control system can. The circuitry and components needed to build the current loop can be costly when a hard disk drive manufacturer is producing millions of disk drives. Conventional current mode control architectures require both a measured coil current 301 and measured position 302 components to obtain a stable configuration.
The illustration of FIG. 4 is derived from U.S. Pat. No. 4,679,103 awarded Jul. 7, 1987 and is largely representative of presently used current mode control techniques. The position signal POS(t) 400, which is a function of time, is amplified in block 411 and then separated into primary 402 and quadrature 404 components in the demodulator 412. These signals are converted to digital samples PESP(n) 406 and PESQ(n) 408 by A/D converters 413 and 414, respectively. Note that it is technically feasible to embody A/D converters 413 and 414 using a single digitizer multiplexed between the two analog inputs. This would save circuits. Note this alternative is feasible only if the sampling rate is low enough to permit the single digitizer to form two digital words each sample period, one for the in-phase signal and one for the quadrature signal. The voice coil current signal i(t) 403 is also sampled by an A/D converter 421, which develops the current feedback signal i(n) 405. Desired position signal XD 409 is supplied as an input to the state estimator and summing loop function 415 which completes computation of the control input signal u(n) 410 from the three components PESP(n), PESQ(n), and i(n). The digital signal u(n) is then converted in D/A converter 416 to the analog control input signal u(t) 420 which drives the power amplifier 417.
The possibility of removing the current feedback signal 403 and driving the VCM in voltage mode without any current feedback would allow for cost reduction in the electronic control module. If this could be implemented losing none of the desired performance, an extremely attractive alternative using voltage mode control could be realized. The following illustrates a current mode design using available simulation and synthesis techniques. This will provide a contrast to the present invention in which control of the voice coil motor is accomplished using a simpler voltage mode architecture.
Current Mode Control System
The conventional current mode control system makes use of a reduced order model for current mode control of a hard disk drive actuator and the related control system. This control system is divided into two parts: one for seeking mode and one for tracking mode. The design of each controller is discussed and guidelines are provided where appropriate after the model of the actuator is discussed.
Current Mode Actuator Model
The reduced order model of a hard disk drive actuator under current mode control may be shown to be of the form
{dot over (x)}=Ax+Bu(txe2x88x92xcex)
y=Cxxe2x80x83xe2x80x83(6)
where the state vector, x, was defined as                     x        =                              [                                                            θ                                                                              ω                                                                              b                                                      ]                    ⁢                      xe2x80x83                    ⁢          and                                    (        7        )                                A        =                                            [                                                -                                                                                                              0                                                                                                                                                  K                            spr                                                                                                                                                                                        J                                                                                                                      0                                                                                                                    -                                                                                                                              1                                                                                                                                                  K                            v                                                                                                                                                                                        J                                                                                                                      0                                                                                                      ⁢                                                                                                              0                                                                                                                                                                                K                              t                                                        ⁢                                                          K                              drv                                                                                                                                                                                                                    J                                                                                                                      0                                                                                                                                ]                        ⁢                          xe2x80x83                        ⁢            B                    =                                                    [                                                                                                    0                                                                                                                                                                  K                            t                                                    ⁢                                                      K                            drv                                                                                                                                                                                                  J                                                                                                            0                                                                                            ]                            ⁢                              xe2x80x83                            ⁢                              C                T                                      =                                          [                                                                                                    K                        pes                                                                                                                        0                                                                                                  0                                                                      ]                            .                                                          (        8        )            
These equations (6), (7), and (8) represent collectively the information contained in the equation of FIG. 4 for current mode control. The states are xcex8, the angular position of the VCM shaft in units of radians, xcfx89, the angular velocity of the VCM shaft in units of radians/sec and b, a bias in units of D/A bits. The output is y, the position of the read/write head in units of track bits. Since the plant is positioned by a discrete-time control system running in a DSP, a computational delay, xcex, was incorporated into the model.
In that discussion the discrete-time model of the plant becomes
xe2x80x83x[n+1]="PHgr"x[n]+xcex932u[n]+xcex931u[nxe2x88x921]y[n]=Cx[n]xe2x80x83xe2x80x83(9)
where "PHgr"=eATs, xcex931=∫Tsxe2x88x92xcexTseAtB dt and xcex932=∫0Tsxe2x88x92xcexeATB dt. By creating an additional state xa[n]=u[nxe2x88x921] and augmenting it with the original state vector, the plant model becomes                                           [                                                                                x                    ⁡                                          [                                              n                        +                        1                                            ]                                                                                                                                                              x                      a                                        ⁡                                          [                                              n                        +                        1                                            ]                                                                                            ]                    =                                                    [                                                                            Φ                                                                                      Γ                        1                                                                                                                        0                                                              0                                                                      ]                            ⁡                              [                                                                                                    x                        ⁡                                                  [                          n                          ]                                                                                                                                                                                                  x                          a                                                ⁡                                                  [                          n                          ]                                                                                                                    ]                                      +                                          [                                                                                                    Γ                        2                                                                                                                        1                                                                      ]                            ⁢                              u                ⁡                                  [                  n                  ]                                                                    ⁢                  
                ⁢                              y            ⁡                          [              n              ]                                =                                    [                              C                ⁢                                  xe2x80x83                                ⁢                0                            ]                        ⁡                          [                                                                                          x                      ⁡                                              [                        n                        ]                                                                                                                                                                                x                        a                                            ⁡                                              [                        n                        ]                                                                                                        ]                                                          (        10        )            
For convenience in the firmware, the units of the state variables have be subjected to the transformation                     T        =                  [                                                                      K                  pes                                                            0                                            0                                            0                                                                    0                                                                                  K                    pes                                    ·                                      T                    s                                                                              0                                            0                                                                    0                                            0                                            1                                            0                                                                    0                                            0                                            0                                            1                                              ]                                    (        11        )            
This transformation was applied to give the angular position state units of bits and the angular velocity state units of track bits/sample. The units of the bias state and the previous input state are unchanged by this transformation.
Following these steps, the numerical model of the current mode plant can be written in the form
x[n+1]=Fx[n]+Gu[n]y[n]=Hx[n]xe2x80x83xe2x80x83(12)
where                     F        =                                            [                                                                    1                                                        0.9960                                                        1.8042                                                        0.9591                                                                                        0                                                        0.9920                                                        3.6036                                                        1.1352                                                                                        0                                                        0                                                        1                                                        0                                                                                        0                                                        0                                                        0                                                        0                                                              ]                        ⁢                          xe2x80x83                        ⁢            G                    =                                                    [                                                                            0.8451                                                                                                  2.4683                                                                                                  0                                                                                                  1                                                                      ]                            ⁢                              H                T                                      =                                          [                                                                            1                                                                                                  0                                                                                                  0                                                                                                  0                                                                      ]                            .                                                          (        13        )            
The frequency response of the simplified model of the current mode plant has constant magnitude at low frequency which represents friction and cable bias in the plant and then changes to a double integrator effect about 5 Hz which represents the idealistic second-order plant created by the transconductance loop.
Given the model and frequency response of the current mode plant, the control system can be designed to make the hard disk drive seek and track. Since these two modes of operation are distinctly different, controller switching is employed in the transition between seeking and tracking modes.
Current Mode Seeking Controller
The purpose of the seeking controller is to move the actuator arm from the current track location to within a few tracks of a desired track location in the shortest amount of time possible. This objective is usually met by controlling the acceleration and deceleration portions of the seek trajectory with the help of an estimator/regulator control system. Once the head position error is within a prescribed number of tracks, the control system makes a transition from the seeking controller to the tracking controller.
The acceleration portion of the seek trajectory is basically open loop from a control systems perspective. The control system determines the sign and magnitude of the maximum command it can apply based on the direction and length of seek. Using an estimator, the velocity is predicted for the next control cycle to determine when the deceleration portion of the seek trajectory should be initiated. Once the predicted velocity exceeds the velocity necessary for decelerating to the desired track, the deceleration portion of the seek trajectory is activated.
The deceleration portion of the seek trajectory is separated into a linear velocity profile or a square root velocity profile depending on the number of tracks that the head is from the desired track. For example, denoting the number of tracks to go (sixty tracks in this example) with the variable Tlin, the linear velocity profile command can be written as
xcexdlin=Kxc2x7Perr when |Perr|xe2x89xa6Tlinxe2x80x83xe2x80x83(14)
where xcexdlin is the desired velocity generated by the linear velocity profile method, K is the gain parameter relating position error to the desired velocity command and Perr is the position error of the head, i.e. the difference between the desired track position XD of the head and the actual track position of the head.
The square root velocity profile method is derived from the kinematics of a simple second-order system. Assuming constant acceleration, the square root velocity profile command can be written as
xcexdsqrt=sgn(Perr)xc2x7{square root over (xcexd02+2a|Perr|)} when |Perr| greater than Tlinxe2x80x83xe2x80x83(15)
where xcexdsqrt is the desired velocity generated by the square root velocity profile method, a is the magnitude of the acceleration and xcexd0 is a constant denoting an offset in the square root velocity profile.
By equating the value for each velocity profile and the slope of each velocity profile at the transition point Tlin, the unknown constants K and xcexd0 can be determined. The linear velocity profile can be written as                               v          lin                =                                            a                              T                lin                                              ·                      P            err                                              (        16        )            
and the square root velocity profile can be written as                               v          sqrt                =                              sgn            ⁡                          (                              P                err                            )                                ·                                                    2                ⁢                                  a                  ⁡                                      (                                                                  "LeftBracketingBar"                                                  P                          err                                                "RightBracketingBar"                                            -                                                                        T                          lin                                                2                                                              )                                                                        .                                              (        17        )            
FIG. 5 shows a plot of the linear velocity profile command 501 and the square root velocity profile command 502 for xc2x1200 tracks of position error, Perr. At |Perr|=Tlin, the linear velocity profile is tangent to the square root velocity profile.
The velocity profile technique requires that a method for estimating the velocity of the head must be developed. The predicted head velocity for the next sample time is needed during the acceleration portion of the seek trajectory and the current head velocity at the current sample time is needed during the deceleration portion of the seek trajectory. In a hard disk drive, the position of the head is determined by comparing the relative amplitudes of successive bursts but there are no signals present to determine the velocity of the head. As a result, an estimator is used to provide accurate velocity estimates during seek maneuvers. In addition, a regulator can be designed to accurately control the head position.
Reference [1] provides a thorough discussion of estimator/regulator control system design. The equations for a current estimator/regulator control system can be written as
xc[n]=xp[n]+Lc(y[n]xe2x88x92Hxp[n]) xp[n+1]=Fxc[n]+Gu[n]u[n]=xe2x88x92Kcxc[n]xe2x80x83xe2x80x83(18)
where xc is a vector of current estimator states, xp is a vector of predicted estimator states, Lc is a vector of current estimator gains and Kc is a vector of regulator gains.
From these expressions, the predicted head velocity can be determined for the acceleration portion of the seek trajectory and the current head velocity can be determined for the deceleration portion of the seek trajectory. A block diagram illustrating the seeking deceleration controller is shown in FIG. 6. Switching between the square root velocity profile and the linear velocity profile is indicated by the switch 600 with positions (a) square root velocity profile 601 and (b) linear velocity profile 602 respectively. The parameters xc1[n] 603 and xc2[n] 604 are defined by equation (18).
This form of feedback allows the square root velocity profile and the linear velocity profile to co-exist in the same control architecture. The current velocity estimate is subtracted from the desired velocity to form a velocity error which drives the rest of the control system.
Several methods exist to determine or estimate regulator gains. One approach involves placing the estimator roots so that the resultant response is faster than what would result from using regulator roots (by a factor of 2 to 4) so that the total response is dominated by the slower regulator poles. This is developed more fully in reference [1]. For the current estimator gains, z-domain roots of 0, 0.2373, 0.3009 and 0.8668 resulted in a gain matrix of Lc=[0.9376 0.6163 0.0197 0]T. For the regulator gains, z-domain roots of 0.6675, 0.4724xc2x1j0.1239 and 1 resulted in gains of Kc=[0.0271 0.1445 1 0].
The frequency response of the current mode seeking controller is that of a typical network having an integrator and using two lead terms to add phase margin to the plant near the crossover frequency and two poles to flatten the frequency response at high frequency. There is also a lead/lag pair at high frequency to satisfy the controller order constraints of the regulator/estimator design.
The controller frequency response can be combined with the plant frequency response to produce the open loop frequency response for the seeking mode. For this seeking controller, the gain margin is 7.1 dB, the phase margin is 31.4xc2x0 and the open-loop crossover frequency is 520.8 Hz. This controller is used to move the head only to within 2 or 3 tracks of the desired track. At that point, the tracking controller becomes active.
Current Mode Tracking Controller
The purpose of the tracking controller is to assume control of the VCM from the seeking controller when the head is a few tracks away for the desired track and move it to the desired location with less than one track of overshoot. Once the head is within some prescribed fraction of a track for several consecutive control cycles, the system is considered to be xe2x80x98on-trackxe2x80x99 and reading and writing of data can occur. If the head position ever exceeds some pre-determined small fraction of a track, it is considered xe2x80x98off-trackxe2x80x99 and the hard drive is not allowed to write data. The control system must relocate the head to within the prescribed fraction of a track before the system is returned to the xe2x80x98on-trackxe2x80x99 state and writing can resume. Therefore, it is important that the control system keeps the head on track once it has achieved the xe2x80x98on-trackxe2x80x99 state.
To better regulate the position error of the system, the tracking controller is a series filter with Perr, as its input and a DAC command, u, as its output. Since the control system employs a fixed-point processor, a parallel cascade representation of the control system was chosen to minimize numerical issues. A block diagram of the tracking controller is shown in FIG. 7. This form permits a large portion of the controller to be pre-computed so that the computational delay is minimized. The Kca, Kcb and Kcc variables are used to adjust the pole and zero locations of the filter. The Km variable allows the integrator to be turned on and off depending on the control system logic. Finally, the Kloop variable is used to adjust the DC gain of the controller so that calibration routines can set an open-loop crossover frequency of 600 Hz for the open-loop system.
The over all transfer function for the control system shown in FIG. 4 can be written as                               u                      P            err                          =                              K            loop                    ⁢                                                                      z                  3                                +                                                      (                                                                  K                        ni                                            -                                              K                        ca                                            -                      2                                        )                                    ⁢                                      z                    2                                                  +                                                      (                                                                  K                        ca                                            +                                              K                        cb                                            +                      1                                        )                                    ⁢                  z                                -                                  K                  cb                                                                              z                  ⁡                                      (                                          z                      -                      1                                        )                                                  ⁢                                  (                                      z                    -                                          K                      cc                                                        )                                                      .                                              (        19        )            
Notice that the controller has an integrator to drive the position error to zero, a pole at the origin in the z-domain (at infinite it the s-domain) and a pole at z=Kcc. The zeros of the series filter are determined by the values of Kca, Kcb and Km. The values for each gain are Kca=0.2737, Kcb=0.3811, Kcc=0.2765, Kloop=0.1786 and Km=0 or 0.0072.
Since the value of Km can either be 0 or 0.0072, the characteristics of the filter change when the integrator is turned on or off. Both conditions are checked to ensure that the system is stable for both modes of operation. When the integrator is off, Km=0 and the series filter can be factored into                               u                      P            err                          =                              K            loop                    ⁢                                                    (                                  z                  -                  1                                )                            ⁢                              (                                                      z                    2                                    -                                                            (                                                                        K                          ca                                                +                        1                                            )                                        ⁢                    z                                    +                                      K                    cb                                                  )                                                                    z                ⁡                                  (                                      z                    -                    1                                    )                                            ⁢                              (                                  z                  -                                      K                    cc                                                  )                                                                        (        20        )            
to demonstrate how a zero is created to cancel the integrator pole.
The frequency response of the tracking controller for current mode shows that the primary effect of turning the integrator off is a gain shift to a constant value of xe2x88x9231.5 dB and a phase shift of 90xc2x0 below 100 Hz. Near the open-loop crossover frequency of 600 Hz, the magnitude and phase of the two controllers are nearly identical so there are no critical stability issues related to the integrator.
The effect of the tracking controller on the plant frequency response can be summarized as follows. When the integrator is xe2x80x98offxe2x80x99, the gain margin is 7.4 dB, the phase margin is 40.6xc2x0 and the open-loop crossover frequency is 563.1 Hz. After turning xe2x80x98onxe2x80x99 the integrator, the gain margin becomes 7.5 dB, the phase margin becomes 40.8xc2x0 and the open-loop crossover frequency becomes 534.7 Hz. In either case, the phase margin for the tracking controller is nearly 10xc2x0 larger than the phase margin for the seeking controller. This extra phase margin will reduce the amount of overshoot in the seek response as the head approaches the desired track.
This invention comprises a control system architecture for voltage mode control of the voice coil motor VCM in a hard disk drive. The design methods and philosophies employed for the voltage mode architecture of this invention, were adapted in part, from current mode control approaches when appropriate, and only algorithms relevant to both approaches were migrated to the voltage mode design. For example, the square root velocity profile method for current mode control can be used in voltage mode control. The only modification required is to appropriately scale the regulator gains.
The control system design was developed first, in the background section of this application, for current mode control of a hard disk drive. In the detailed description of the invention, the adaptation of the design to voltage mode control is presented. Experimental data validates the system models used.